package cn.eleven.dao;

import cn.eleven.entity.User;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * 用户数据访问接口
 */
public interface UserDAO {

    /**
     * 根据用户名和密码查找用户
     * @param conn 数据库连接
     * @param username 用户名
     * @param password 密码
     * @return 用户对象，如果未找到返回null
     * @throws SQLException 数据库异常
     */
    User findByUsernameAndPassword(Connection conn, String username, String password) throws SQLException;

    /**
     * 根据用户ID查找用户
     * @param conn 数据库连接
     * @param userId 用户ID
     * @return 用户对象，如果未找到返回null
     * @throws SQLException 数据库异常
     */
    User findById(Connection conn, int userId) throws SQLException;

    /**
     * 更新用户的已占用房间
     * @param conn 数据库连接
     * @param userId 用户ID
     * @param roomName 房间名称
     * @return 是否更新成功
     * @throws SQLException 数据库异常
     */
    boolean updateUserRoomOccupied(Connection conn, int userId, String roomName) throws SQLException;

    /**
     * 清除用户的已占用房间
     * @param conn 数据库连接
     * @param userId 用户ID
     * @return 是否更新成功
     * @throws SQLException 数据库异常
     */
    boolean clearUserRoomOccupied(Connection conn, int userId) throws SQLException;

    /**
     * 查询用户是否存在
     */
    public boolean isUserExists(String username);

    /**
     * 添加用户（注册）
     */
    public void addUser(User user) throws SQLException;

    /**
     * 通过用户名和密码查找用户
     */
    public User findUser(String username, String password);
}
